from .models import User

#get_response 这是个方法
def front_user_middleware(get_response):
    print("一些初始化的代码可以放到这里111")
    def middleware(request):#这是真正执行的地方
        print("这里会执行request到达view 之前的代码222")
        user_id = request.session.get('user_id')
        if user_id:
            try:
                user = User.objects.get(pk=user_id)
                request.front_user = user
            except:
                request.front_user = None
        else:
            request.front_user = None
        response= get_response(request) #以这个为界限 上面是到达view之前的代码
        #下面就是 response到达浏览器的代码
        print("response到到达浏览器之前的代码在这里执行")

        return response
    return middleware

class FrontUserMiddleWare(object):
    def __init__(self,get_response):
        #执行一些初始化的代码
        print("中间件初始化的代码放到这里")
        self.get_response = get_response
    def __call__(self,request):#为每一个请求响应执行的代码
        print('request到达view之前执行的代码')
        user_id = request.session.get('user_id')
        if user_id:
            try:
                user = User.objects.get(pk=user_id)
                request.front_user = user
            except:
                request.front_user = None
        else:
                request.front_user = None

        #这里之前的代码 是request到达view之前执行的代码
        response = self.get_response(request)
        print("我执行的是response 到达浏览器之前的代码")

        return response


